--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
lang/README.ja.md HEAD (b89dc9e6) Text, 21.73 KB
Reticulum MeshChatX
Liam Cottle 氏による Reticulum MeshChat を大幅に改修・機能拡張したフォークです。
本プロジェクトはオリジナルの Reticulum MeshChat とは独立しており、提携関係にありません。
• ウェブサイト: meshchatx.com
• ソースコード: github.com/Quad4-Software/MeshChatX
• 変更履歴: CHANGELOG.md
• LXMF: T383838f489752fbef161c64d65e385a4e9fc74
• Umbrel App Store: apps.umbrel.com/app/meshchatx
<a href="https://apps.obtainium.imranr.dev/redirect.html?r=obtainium://add/https://github.com/Quad4-Software/MeshChatX"><img src="https://raw.githubusercontent.com/ImranR98/Obtainium/main/assets/graphics/badge_obtainium.png" height="60" alt="Get it on Obtainium"></a>
rngit NomadNet Node: T3838385399f5a0212477618821e91e88ce053b:/page/index.mu
rngit: T383838git clone rns://926baefe13daf5178c174f158dae1b45/quad4/MeshChatX
MeshChatX NomadNet Node: T383838c10d80b1a42fa958c37a6cc30dc04f53:/page/index.mu
Reticulum MeshChat からの主な変更
• 通話に LXST を使用
• Peewee ORM を生 SQL に置き換え
• Axios をネイティブ T383838fetch に置き換え
• Electron 41.x(同梱 Node 24 ランタイム)
• Web サーバーと同梱フロントエンドを含む T383838.whl によりデプロイの選択肢を拡張
• i18n
• 依存関係管理に PNPM と UV
│ [!WARNING] MeshChatX は旧バージョンの Reticulum MeshChat
│ とのデータ互換性を保証しません。マイグレーションやテスト前にデータをバックアップしてください。
│ [!WARNING] レガシーシステムはまだサポートされません。現在の基準は Python T383838>=3.11 と Node
│ T383838>=24(Electron 41 は Node 24 に揃う;T383838package.json の T383838engines と CI も同じライン)。
必要条件
• Python T383838>=3.11(T383838pyproject.toml より)
• Node.js T383838>=24(T383838package.json の T383838engines)
• pnpm T38383811.1.2(T383838package.json の T383838packageManager)
• UV(T383838Taskfile.yml および CI ワークフローで使用)
Browser Versions Required:
Safari 16.4 以降、Chrome 111 以降、Firefox 128 以降(同梱 Web UI)。
T282828
task install
task format
task lint
task Tffa657test
task build
インストール方法
環境とパッケージ形式に合わせて選んでください。
┌──────────────────────────┬────────────────────┬───────────────────────────────────────┬──────────┐
│ 方法 │ フロントエンド含む │ アーキテクチャ │ 最適な… │
├──────────────────────────┼────────────────────┼───────────────────────────────────────┼──────────┤
│ Docker イメージ │ はい │ T383838linux/amd64, T383838linux/arm64 │ Linux … │
│ Python wheel (T383838.whl) │ はい │ Python がサポートする全アーキテクチャ │ Node ビ… │
│ Linux AppImage │ はい │ T383838x64, T383838arm64 │ ポータ… │
│ Debian パッケージ (T383838.deb) │ はい │ T383838x64, T383838arm64 │ Debian/… │
│ RPM パッケージ (T383838.rpm) │ はい │ 公開用 CI ランナーに依存 │ Fedora/… │
│ ソースから │ ローカルビルド │ ホストアーキテクチャ │ 開発・… │
└──────────────────────────┴────────────────────┴───────────────────────────────────────┴──────────┘
備考:
• GitHub Actions はタグ付きリリース(Linux wheel / AppImage / deb / rpm、Windows、macOS、Flatpak、dev/master 上のタグ時の Android APK、SLSA、ドラフトリリース)を 1 回のワークフローでビルドします: T383838.github/workflows/build-release.yml。コンテナイメージは T383838.github/workflows/docker.yml。ブランチと PR の Android CI は T383838.github/workflows/android-build.yml。
• Linux T383838x64 および T383838arm64 の AppImage + DEB は GitHub でビルド。RPM も試行し、成果物があればアップロードします。
Docker
• Docker Hub: T383838quad4io/meshchatx
• GHCR: T383838ghcr.io/quad4-software/meshchatx
T282828
docker compose up -d
T282828
docker run -d --name reticulum-meshchatx Tffea00\
--restart unless-stopped Tffea00\
--init Tffea00\
--user T79c0ff1000:1000 Tffea00\
--security-opt no-new-privileges:true Tffea00\
--cap-drop ALL Tffea00\
--read-only Tffea00\
--tmpfs /tmp:noexec,nosuid,sizeTff7b72=256m Tffea00\
--tmpfs /home/meshchat:nosuid,sizeTff7b72=64m Tffea00\
--cpusTff7b72=T79c0ff2.0 Tffea00\
--memoryTff7b72=1g Tffea00\
--memory-reservationTff7b72=256m Tffea00\
--pids-limitTff7b72=T79c0ff512 Tffea00\
-p T79c0ff127.0.0.1:8000:8000 Tffea00\
-v meshchatx-config:/config Tffea00\
ghcr.io/quad4-software/meshchatx:latest
GHCR の代わりに Docker Hub の T383838quad4io/meshchatx:latest を使えます。
デフォルトの compose ファイル:
• ホスト T383838127.0.0.1:8000 -> コンテナポート T3838388000
• Docker の名前付きボリューム T383838meshchatx-config -> T383838/config(イメージの meshchat ユーザー UID 1000 と整合し、bind mount 用のホスト側 T383838chown が不要になりやすい)
任意: ホストディレクトリをマウントする
ボリューム行を T383838-v "$(pwd)/meshchat-config:/config" に置き換えます(Compose ではサービスの T383838volumes を変更)。コンテナは UID 1000 で動きます。ホスト側ディレクトリはその UID で書き込み可能にしてください(例: T383838sudo chown -R 1000:1000 ./meshchat-config)。初回起動前に空ディレクトリを作成しておくと、Docker が不適切な権限で作成するのを避けられます。
名前付きボリュームの確認や削除
T282828
docker volume inspect meshchatx-config
docker rm -f reticulum-meshchatx
docker volume rm meshchatx-config
リリースアーティファクトからのインストール
1) Linux AppImage (x64/arm64)
1. リリースから T383838ReticulumMeshChatX-v<バージョン>-linux-<アーキテクチャ>.AppImage をダウンロード。
2. 実行権限を付与して起動:
T282828
chmod +x ./ReticulumMeshChatX-v*-linux-*.AppImage
./ReticulumMeshChatX-v*-linux-*.AppImage
2) Debian/Ubuntu T383838.deb (x64/arm64)
1. T383838ReticulumMeshChatX-v<バージョン>-linux-<アーキテクチャ>.deb をダウンロード。
2. インストール:
T282828
sudo apt install ./ReticulumMeshChatX-v*-linux-*.deb
3) RPM ベースのシステム
1. リリースに T383838ReticulumMeshChatX-v<バージョン>-linux-<アーキテクチャ>.rpm がある場合はダウンロード。
2. インストール:
T282828
sudo rpm -Uvh ./ReticulumMeshChatX-v*-linux-*.rpm
4) Python wheel (T383838.whl)
リリースの wheel にはビルド済みの Web アセットが含まれます。
T282828
pip install ./reticulum_meshchatx-*-py3-none-any.whl
meshchatx --headless
T383838pipx もサポート:
T282828
pipx install ./reticulum_meshchatx-*-py3-none-any.whl
ソースからの実行(Web サーバーモード)
開発時やローカルのカスタムビルド向け。
T282828
git clone https://github.com/Quad4-Software/MeshChatX.git
Tffa657cd MeshChatX
corepack Tffa657enable
pnpm config Tffa657set verify-store-integrity Tffa657true
pnpm install --frozen-lockfile
pip install Ta5d6ff"uv==0.11.15"
uv lock --check
uv sync --group dev
pnpm run build-frontend
uv run python -m meshchatx.meshchat --headless --host T79c0ff127.0.0.1
上記インストールコマンドに関する補足:
• T383838pnpm install --frozen-lockfile は T383838pnpm-lock.yaml の更新を拒否し、ロックファイルが T383838package.json と一致しない場合は失敗します。これにより、想定外の上流バージョンが暗黙的にインストールされるのを防げます。
• T383838verify-store-integrity=true はプロジェクトの T383838pnpm-workspace.yaml にも設定されています。上記の T383838pnpm config set の行はユーザー設定側も明示的に固めるためのものです。
• pnpm v11 以降、ライフサイクルスクリプト (T383838preinstall/T383838postinstall) はデフォルトでブロックされます。インストールスクリプトを実行できるのは T383838pnpm-workspace.yaml の T383838allowBuilds に列挙されたパッケージ(現在 T383838electron、T383838electron-winstaller、T383838esbuild)だけです。
• T383838uv lock --check は T383838uv.lock と T383838pyproject.toml が同期していない場合に即時失敗します。その後の T383838uv sync --group dev はロックファイルからのみ解決します。
• 厳密にロックファイルだけで UV をインストールしたい場合は、CI と揃えるために T383838pip install "uv==0.11.15" で UV バージョンを固定してください。
意図的に依存を更新する場合は、T383838pnpm update / T383838uv lock を専用コミットで実行し、push 前にロックファイルの diff を必ず確認してください。
サンドボックスで実行(Linux)
ネイティブの T383838meshchatx(エイリアス: T383838meshchat)をファイルシステムをより隔離した状態で動かすには、Reticulum と Web UI 向けの通常のネットワークアクセスを保ちつつ Firejail または Bubblewrap(T383838bwrap)を使えます。詳しい例(pip/pipx、UV、USB シリアルの注意)は次を参照:
同梱または同期された T383838meshchatx-docs から配信する場合、同じページがアプリ内 ドキュメント 一覧(MeshChatX ドキュメント)にも表示されます。
Linux デスクトップ: 絵文字フォント
絵文字ピッカーはシステムフォント(Electron/Chromium)で標準 Unicode 絵文字を描画します。絵文字が空の四角(「豆腐」)になる場合はカラー絵文字パッケージをインストールし、アプリを再起動してください。
┌──────────────────────────────┬───────────────────────────────────────────────────────────────────┐
│ ディストリビューション(例) │ パッケージ │
├──────────────────────────────┼───────────────────────────────────────────────────────────────────┤
│ Arch Linux, Artix, Manjaro │ T383838noto-fonts-emoji(T383838sudo pacman -S noto-fonts-emoji) │
│ Debian, Ubuntu │ T383838fonts-noto-color-emoji(T383838sudo apt install fonts-noto-color-emoji) │
│ Fedora │ T383838google-noto-emoji-color-fonts │
└──────────────────────────────┴───────────────────────────────────────────────────────────────────┘
インストール後も表示されない場合は T383838fc-cache -fv を実行してください。最小インストールでは記号の網羅用に T383838noto-fonts も任意で入れてください。
ソースからのデスクトップパッケージビルド
スクリプトは T383838package.json と T383838Taskfile.yml に定義されています。
Linux x64 AppImage + DEB
T282828
pnpm run dist:linux-x64
Linux arm64 AppImage + DEB
T282828
pnpm run dist:linux-arm64
RPM
T282828
pnpm run dist:rpm
Task 経由:
T282828
task dist:fe:rpm
コンテナビルド(wheel、AppImage、deb、rpm)
T383838Dockerfile.build は CI と同じ手順(uv、pnpm、T383838task、APT 依存)を実行します。linux/amd64 向け(NodeSource の amd64 tarball、Task の amd64 バイナリ)。デフォルトは全ターゲット。build-arg で上書き可能。
T383838MESHCHATX_BUILD_TARGETS の値: T383838all(既定)、T383838wheel、または T383838electron(x64 / arm64 の AppImage + deb、RPM はベストエフォート、wheel なし)。
ビルド:
T282828
docker build -f Dockerfile.build -t meshchatx-build:local .
wheel のみ:
T282828
docker build -f Dockerfile.build --build-arg Te6edf3MESHCHATX_BUILD_TARGETSTff7b72=wheel -t meshchatx-build:wheel .
完成したイメージから T383838/artifacts をホストにコピー:
T282828
Te6edf3cidTff7b72=Tff7b72$(docker create meshchatx-build:localTff7b72)
docker cp Ta5d6ff"Tffd700${Te6edf3cidTffd700}Ta5d6ff:/artifactsTa5d6ff" ./meshchatx-artifacts
docker rm Ta5d6ff"Tffd700${Te6edf3cidTffd700}Ta5d6ff"
アーキテクチャサポート
• Docker イメージ: T383838amd64, T383838arm64
• Linux AppImage: T383838x64, T383838arm64
• Linux DEB: T383838x64, T383838arm64
• Windows: T383838x64, T383838arm64(ビルドスクリプトあり)
• macOS: ローカルビルド向けにビルドスクリプトあり(T383838arm64, T383838universal)
• Android: universal APK のみ(android/README.md 参照)
Android
MeshChatX はネイティブ Android APK のビルドに対応しています(Termux のみに限りません)。
ソースから APK をビルド
リポジトリのルートで:
T282828
T8b949e# 1) android/app/build.gradle で使う Chaquopy 用ホイールをビルド
bash scripts/build-android-wheels-local.sh
T8b949e# 2) universal APK をビルド(1 回の実行で debug 1 本 + release 1 本;android/README.md 参照)
Tffa657cd android
./gradlew --no-daemon :app:assembleDebug :app:assembleRelease
単一の Android バリアント。Gradle が T383838meshchatx/ ツリー全体を T383838app/src/main/python/meshchatx/ に同期し、オフラインリポジトリ用ホイールも含みます。ドキュメントおよび公開ビルドは universal パッケージのみです。実行ごとにデバッグ APK 1 本とリリース APK 1 本が生成され、それぞれ T383838android/app/build.gradle で選んだ全ネイティブ ABI を含みます。
• デバッグ: T383838android/app/build/outputs/apk/debug/app-debug.apk
• リリース: T383838android/app/build/outputs/apk/release/app-release-unsigned.apk
備考:
• リリース成果物は、署名を設定するまで既定で未署名(T383838scripts/sign-android-apks.sh)。
• universal APK に埋め込まれるネイティブ ABI は T383838android/app/build.gradle の一覧(T383838armeabi-v7a 有効時を含む)。T383838armeabi-v7a 用ホイールのビルドには T383838ANDROID_HOME の Android SDK が必要(T383838android/README.md 参照)。
• リポジトリルートに T383838dist/reticulum_meshchatx-*.whl があると(例: T383838python -m build --wheel -o dist .)、同梱リポジトリの更新で PyPI よりその MeshChatX ホイールを優先。CI では Android Gradle の前にそのホイールをビルドします。
追加ドキュメント:
設定
┌────────────────────────┬──────────────────────────────────────┬────────────┬─────────────────────┐
│ 引数 │ 環境変数 │ デフォルト │ 説明 │
├────────────────────────┼──────────────────────────────────────┼────────────┼─────────────────────┤
│ T383838--host │ T383838MESHCHAT_HOST │ T383838127.0.0.1 │ Web サーバーのバイ… │
│ T383838--port │ T383838MESHCHAT_PORT │ T3838388000 │ Web サーバーポート │
│ T383838--no-https │ T383838MESHCHAT_NO_HTTPS │ T383838false │ HTTPS を無効化 │
│ T383838--ssl-cert / T383838--ssl-key │ T383838MESHCHAT_SSL_CERT / T383838MESHCHAT_SSL_KEY │ (なし) │ PEM 証明書と鍵のパ… │
│ T383838--rns-log-level │ T383838MESHCHAT_RNS_LOG_LEVEL │ (なし) │ Reticulum(RNS)の… │
│ T383838--headless │ T383838MESHCHAT_HEADLESS │ T383838false │ ブラウザを自動で開… │
│ T383838--auth │ T383838MESHCHAT_AUTH │ T383838false │ 基本認証を有効化 │
│ T383838--reset-password │ T383838MESHCHAT_RESET_PASSWORD │ T383838false │ 保存されたパスワー… │
│ T383838--storage-dir │ T383838MESHCHAT_STORAGE_DIR │ T383838./storage │ データディレクトリ │
│ T383838--public-dir │ T383838MESHCHAT_PUBLIC_DIR │ 自動/同梱 │ フロントエンドのデ… │
└────────────────────────┴──────────────────────────────────────┴────────────┴─────────────────────┘
ブランチ
┌──────────┬────────────────────────────────────────────────────────────┐
│ ブランチ │ 目的 │
├──────────┼────────────────────────────────────────────────────────────┤
│ T383838master │ 安定版リリース。本番向けのコードのみ。 │
│ T383838dev │ 活発な開発。不安定または不完全な変更を含む場合があります。 │
└──────────┴────────────────────────────────────────────────────────────┘
開発
T383838Taskfile.yml のよく使うタスク:
T282828
task install
task format
task lint
task Tffa657test
task build
T383838Makefile のターゲットは T383838task に委譲する薄いラッパーです(上記と同じコマンド):
┌──────────────┬──────────────┬──────────────────────────────────────────────┐
│ コマンド │ 委譲先 │ 説明 │
├──────────────┼──────────────┼──────────────────────────────────────────────┤
│ T383838make install │ T383838task install │ pnpm と UV の依存関係をインストール │
│ T383838make run │ T383838task run │ UV 経由で MeshChatX を実行 │
│ T383838make build │ T383838task build │ フロントエンドとバックエンドの成果物をビルド │
│ T383838make lint │ T383838task lint │ ESLint、vue-tsc、knip、Ruff、basedpyright │
│ T383838make test │ T383838task test │ フロントエンドとバックエンドのテスト │
│ T383838make clean │ T383838task clean │ ビルド成果物と node_modules を削除 │
└──────────────┴──────────────┴──────────────────────────────────────────────┘
バージョン管理
このリポジトリの現在のバージョンは T3838384.8.2 です。
• リリースのバージョン上げは T383838package.json の T383838version のみ編集します。
• T383838pnpm run version:sync(T383838pnpm run build 開始時にも実行)で、T383838pyproject.toml、T383838meshchatx/src/version.py、T383838THIRD_PARTY_NOTICES.txt(製品行)、README / lang/README.\*(現在のバージョン行)、T383838docs/meshchatx_on_raspberry_pi.md の pipx 例、T383838packaging/arch/PKGBUILD の補助フィールドに反映します。
• T383838meshchatx.__version__ は T383838meshchatx/src/version.py から読み、T383838meshchatx.src をインポートしないため、単なる T383838import meshchatx は軽量のままです。
• Changelog のエントリはリリース時に手作業のままです。
セキュリティ
言語の追加
作業手順: ArgosTranslate から ローカル LLM(Qwen 3 + Gemma 4)へ。
そのあと、LXMF 等で修正を歓迎します。
ロケールの検出は自動です。T383838meshchatx/src/frontend/locales/ に新しいファイル(例: T383838xx.json)を追加し、T383838en.json と同じキーに加え、セレクタ表示用の T383838_languageName を最上位に置きます。T383838en.json をコピーし手作業で訳すこともできます。機械補助は任意で、求められません。
任意: Argos Translate で土台 -- T383838en.json から下書きするには T383838scripts/argos_translate.py(整形・カラー出力、 T383838{count} 等の保護)を使えます。
T282828
T8b949e# 必要なら argostranslate を導入
pipx install argostranslate
T8b949e# 翻訳スクリプトを実行
python scripts/argos_translate.py --from en --to xx --input meshchatx/src/frontend/locales/en.json --output meshchatx/src/frontend/locales/xx.json --name Ta5d6ff"言語名"
機械下書きのあと、文法・文脈・トーンは LLM か人が確認(フォーマル/カジュアル等)。
T383838pnpm test -- tests/frontend/i18n.test.js --run で T383838en.json とのキー一致を検証。
その他のコードの変更は必要ありません。アプリ、言語セレクター、およびテストは、ビルド時に T383838meshchatx/src/frontend/locales/ ディレクトリからロケールを検出します。
寄付
クレジット
• Liam Cottle - オリジナル Reticulum MeshChat
• RFnexus - micron パーサー(JavaScript)
• markqvist - Reticulum, LXMF, LXST
ライセンス
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────